package com.example.sup.exception;

import com.example.sup.controller.response.ServerResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @ClassName SupGlobalEceptionAdvice
 * @Description {TODO}
 * @Author 李哲
 * @Date 15:23 2024/7/19
 * @Version 1.0
 */
@RestControllerAdvice
@Slf4j
public class SupGlobalExceptionAdvice {

    /**
     * 登录的异常处理
     * @param e 未登录异常类
     * @return
     */
    @ExceptionHandler(value = UnLoginException.class)
    public ServerResponse<String> handleUnLoginException(UnLoginException e){
        //1.控制台输出
        e.printStackTrace();
        //2.记录日志
        log.error("认证错误：{}",e.getMessage());
        //3.发送邮件、短信、钉钉
        return ServerResponse.failWithMsg(e.getMessage());
    }


    /**
     * 通用查询的异常处理
     * @param e 通用的查询异常类
     * @return
     */
    @ExceptionHandler(value = CommonQueryException.class)
    public ServerResponse<String> handleCommonQueryException(CommonQueryException e){
        //1.控制台输出
        e.printStackTrace();
        //2.记录日志
        log.error("查询错误：{}",e.getMessage());
        //3.发送邮件、短信、钉钉
        return ServerResponse.failWithMsg(e.getMessage());
    }

    /**
     * 通用的异常处理   500   400
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    public ServerResponse<String> handleException(Exception e){
        //1.控制台输出
        e.printStackTrace();
        //2.记录日志
        log.error("系统错误：{}",e.getMessage());
        //3.发送邮件、短信、钉钉
        return ServerResponse.failWithMsg("系统内部异常,请联系管理员!");
    }


}